/*
 * ================================================================================变量定义区
 */
var showCount   = 10; //定义每页显示条数
var currentPage = 1;//全局变量，当前页
var page_index  = 0;//页面索引
/*
 * ================================================================================页面初始化函数
 */
$(function()
{
	//获取页面类型
	var pageType = $("#pageType").val();
	//获取上次列表
	if(pageType === 'lastest')
	{
		getLastestListAndForm();
	}
	else
	{
		getCurrentList(currentPage);
	}
	
	//回车键绑定事件 
	document.onkeydown = function(event) 
	{
		var e = event || window.event || arguments.callee.caller.arguments[0];

		if (e && e.keyCode == 13) 
		{ 
			event.preventDefault ? event.preventDefault() : event.returnValue=false;
			//获取按参数查询用户列表
			queryDate(1);
		}
	};
	
});
/*
 * ================================================================================函数定义区
 * 
 */

/**
 * 获取最近一次的列表
 * 从SessionStorage中获取参数
 */
function getLastestListAndForm()
{
	//获取参数
	var param   = SessionStorage.getSearchParam(),
	//表单参数
	formParam   = param.formParam,
	//搜索参数
	searchParam = param.searchParam;
	//表单渲染
	//选项值
	$("#optionKey").val(formParam.optionKey);
	$("#groupId").val(formParam.groupId);
	
	//列表获取
	getDataList(searchParam);
	//向SessionStorage存储数据
	SessionStorage.setSearchParam(
	{
		formParam    : formParam,
		searchParam  : searchParam
	});
}

/**
 * 获取当前请求列表
 */
function getCurrentList(pageIndex)
{
	//获取查询参数
	var optionKey = $("#optionKey").val().trim().toUpperCase();
	var groupId   = $("#groupId").val().trim().toUpperCase();

	//绑定onchange事件
	$("input[type='text']").change(function()
	{
		$("#queryForm").find("input[name='totalResult']").val(0);
	});
	var param = 
	{
        "showCount"                  :  showCount,
        "currentPage"                :  pageIndex,
        "optionKey"                  :  optionKey,
        "groupId"                    :  groupId,
        "query_condition_field_list" :  "optionKey,groupId"
    };
	getDataList(param);
	//向SessionStorage存储数据
	SessionStorage.setSearchParam(
	{
		formParam:
		{
			optionKey  : optionKey,
			groupId    : groupId
		},
		searchParam    : param
	});
}

/**
 * 获取列表数据
 * @param currentPage 请求的页码
 * @param username 列表中用户的姓名
 */
function getDataList(param)
{ 
	$.ajax(
	{
		type: 'POST',
        url: BASE_PATH +'/systemDictManagement/loadSystemDictList.do',
        dataType:"json",
        data:param,
        cache:false,
        
        success:function(data,textStatus)
        {
        	var html        = "";        	
        	var pageData    = data;
        	var totalResult = pageData.queryParam.totalResult;
        	
        	if(pageData.queryResult != null)
        	{
        		//解析data, 组装成html
	        	$.each(pageData.queryResult,function(i,n)
	        	{
	        		html += '<tr onclick="chooseRow(this,false);"  id="tr_index_' + i + '">'
	        			 +  '<td title="' + switcHtml(n.groupId) + '">' + switcHtml(n.groupId) + '</td>'
	        			 +  '<td title="' + switcHtml(n.optionKey) + '"><input type="hidden" name="paramOptionKey" value="'+ switcHtml(n.optionKey) +'"/>'
	        			 +  '<input type="hidden" name="paramGroupId" value="'+ switcHtml(n.groupId) +'"/>' + switcHtml(n.optionKey) + '</td>'
	        			 +  '<td title="' + switcHtml(n.optionVal) + '">' + switcHtml(n.optionVal) + '</td>'
	        			 +  '<td title=' + switcHtml(n.optionOrder) + ' style="text-align:right;">' + switcHtml(n.optionOrder) + '</td>'
	        			 +  '<td title="' + switcHtml(n.createUser) + '">' + switcHtml(n.createUser) + '</td>'
	        			 +  '<td style="text-align:center;" title='+n.createTime+'>'+n.createTime+'</td>'
	        			 +  '<td style="width: 180px;" title="' + switcHtml(n.lastModifyUser) + '">' + switcHtml(n.lastModifyUser) + '</td>'
	        			 +  '<td style="width: 180px; text-align:center;" title='+n.lastModifyTime+'>'+n.lastModifyTime+'</td>'
	        			 +  '<td style="width: 1px;"></tr>';
	        	});
        	} 
        	else
        	{
        		html = '<tr><td colspan="2">No items.</td></tr>';
        	}
        	
        	$('#tBodyList').html(html);
        	currentPage = param.currentPage;
        	
    		if(totalResult == 0)
    		{
    			$('#tBodyList').html('<tr><td style="text-align:center;">No items.</td></tr>');
    			$("#pagination").hide();
    		} 
    		else 
    		{
    			// 创建分页
    			$("#pagination").show();
    			$("#pagination").pagination(totalResult, 
    			{
    				num_edge_entries            :  1, //边缘页数
    				num_display_entries         :  3, //主体页数
    				current_page                :  currentPage,
    				callback                    :  pageListCallback,
    				items_per_page              :  showCount //每页显示1项
    			});
    		};
    		
    		//合并单元格
    		autoRowSpan();
    		
    		//清除之前所有的选中记录
        	chooseId = null;
        },
        
		error:function(e)
		{
			openAlert("加载数据错误！"); 
			return;
		}
	});
}

/**
 * 分页数据回调函数
 * @param pageIndex 请求页
 */
function pageListCallback(pageIndex)
{
	getCurrentList(pageIndex);
}

/**
 * 查询按钮事件
 * @param indexPage
 */
function queryDate(indexPage) 
{
	//清除之前所有的选中记录
	chooseId = null;
	getCurrentList(1);
}

/**
 * 对相同的groupId进行合并单元格操作
 */
function autoRowSpan() 
{
	//获取表格对象
	var tb = document.getElementById("tBodyList");
	
	//需要合并的列为第一列
	var col = 0;
	
	// 从每一页的首行开始
	var row = 0;
	
	//相等的记录数
	var pos = 1;

	var lastValue = "";
	var value = "";
	
	for (var i = row; i < tb.rows.length; i++) 
	{
		//分别取出每一行的第一列的值
		value = tb.rows[i].cells[col].innerText;
		
		//如果值和上一列相等，则合并
		if (lastValue == value) 
		{
			tb.rows[i].deleteCell(col);
			tb.rows[i - pos].cells[col].rowSpan = tb.rows[i - pos].cells[col].rowSpan + 1;
			tb.rows[i - pos].cells[col].className = "unselected";
			pos++;
		} 
		else 
		{
			lastValue = value;
			pos = 1;
		}
	}
}

/**
 * 跳转到创建用户页面。
 */
function createSystemDict()
{
	//获取选中的行的id
	var id = getSelectedRows();
	var groupId = "";
	
	//如果没有选中任何行，则把groupId置空
	if(!id || id.length<1)
	{
		groupId = "";
	} 
	else
	{
		//获取groupId
		groupId = $("#" + id).find("input[name='paramGroupId']").val();
	}
	
	$("#submitForm [name=groupId]").val(groupId);
	$("#submitForm [name=optionKey]").val("");
	$("#submitForm [name=currentPage]").val(currentPage);
	setUnSearchFormParam();
	$("#submitForm").submit();
}

/**
 * 跳转到修改用户页面。
 */
function updateSystemDict()
{
	//获取选中的行的id
	var id = getSelectedRows();
	
	//如果没有选中任何行，则把groupId置空
	if(!id || id.length<1)
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	optionKey = $("#" + id).find("input[name='paramOptionKey']").val();
	//获取groupId
	groupId   = $("#" + id).find("input[name='paramGroupId']").val();
	
	$("#submitForm [name=groupId]").val(groupId);
	$("#submitForm [name=optionKey]").val(optionKey);
	$("#submitForm [name=currentPage]").val(currentPage);
	setUnSearchFormParam();
	$("#submitForm").submit();
}

/**
 * 删除项
 * @returns {Boolean}
 */
function deleteSystemDict()
{
	//获取选中的行的id
	var id = getSelectedRows();
	
	if(!id || id.length<1)
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	openConfirm("确定删除吗？",null,function()
	{
		var oldOptionKey  = $("#" + id).find("input[name='paramOptionKey']").val();
		//获取groupId
		var groupId       = $("#" + id).find("input[name='paramGroupId']").val();
		  
		$.ajax(
		{
			type: 'POST',
	        url: BASE_PATH +'/systemDictManagement/deleteSystemDict.do',
			data:
			{
				"oldOptionKey"      : oldOptionKey,
				"oldGroupId"        : groupId
			},
			dataType:"json",
			
			success : function(data) 
			{
				
				if(data=='success')
				{
					openAlert('删除成功',function()
					{
						//清除选中id
						chooseId = null;
						getCurrentList(currentPage);
					});
				}
				else
				{
					//清除选中id
					chooseId = null;
					openAlert(data);
				}
			},
			
			error:function(e)
			{
				openAlert('操作失败！错误信息：<div>'+e.responseText+"</div>");
			}
		});
	});
}

/**
 * 删除组
 * @returns {Boolean}
 */
function deleteSystemDictByGroupId()
{
	//获取选中的行的id
	var id = getSelectedRows();
	
	if(!id || id.length<1)
	{
		openAlert('请选择一条记录');
		return false;
	}
	
	openConfirm("将删除此组下的所有记录，确认删除吗？",null,function()
	{
		var groupId = $("#" + id).find("input[name='paramGroupId']").val().trim();
		$.ajax(
		{
			type: 'POST',
	        url: BASE_PATH +'/systemDictManagement/deleteSystemDictByGroupId.do',
			data:
			{
				"groupId"      :  groupId
			},
			dataType:"json",
			success : function(data) 
			{
				if(data=='success')
				{
					openAlert('删除成功',function()
					{
						//清除选中id
						chooseId = null;
						getCurrentList(currentPage);
					});
				}
				else
				{
					//清除选中id
					chooseId = null;
					openAlert(data);
				}
			},
			
			error:function(e)
			{
				openAlert('操作失败！错误信息：<div>'+e.responseText+"</div>");
			}
		});
	});
}

/**
 * 设置未进行搜索的表单信息
 */
function setUnSearchFormParam()
{
	//获取参数
	var param = SessionStorage.getSearchParam();
	//设置表单参数
	param.formParam =
	{
		//选项值
		optionKey   :  $("#optionKey").val().trim(),
		groupId     :  $("#groupId").val().trim()
	} ;
	//重置SessionStrage数据
	SessionStorage.setSearchParam(param);
}
